package acm;

import testing.*;

public class MonstruoGalleta {
	
	private int casosDePrueba;
	
	public MonstruoGalleta()
	{
		
	}	
	
	/**
	 * Metodo que calcula la cantidad de dias en donde cristian puede comer galletas
	 * @param casosPrueba cantidad numerica cargada en un String
	 * @param cantidadTotal String con todas las cantidades
	 * @return Si la ejecucion termina de forma exitosa retorna True, de lo contrario False.
	 */
	public boolean calcularDiasComidos(String casosPrueba, String[][] cantidadTotal)
	{
		int dias=0;
		boolean res = true;
		if(comprobarCasosPrueba(casosPrueba)){
			if(comprobarCantTotal(cantidadTotal)){
				for(int cont = 0; cont<this.casosDePrueba;cont++)
				{
					dias = Integer.parseInt(cantidadTotal[cont][0])/Integer.parseInt(cantidadTotal[cont][1]);
					if(Integer.parseInt(cantidadTotal[cont][0])%Integer.parseInt(cantidadTotal[cont][1])!=0){
						dias++;
					}
					System.out.println("Cristian come "+dias);
				}
			}else{
				System.out.println("Arreglo con las cantidades no son correctas");
				res = false;
			}
		}else{
			System.out.println("La cantidad no es un numero");
			res = false;
		}
		return res;
	}
	
	
	/**
	 * Metodo que comprueba si la cantidad digitada por el usuario es valida y esta en el rango de 1 a 100.
	 * @param entrada recibe la cantidad de casos de prueba dsde un String
	 * @return verdadero si la cantidad es un numero y esta en el rango permitido de lo contrario retornara falso.
	 */
	private boolean comprobarCasosPrueba(String entrada)
	{
		try{
			this.casosDePrueba = Integer.parseInt(entrada);
			
			if(this.casosDePrueba<0||this.casosDePrueba>100){
				return false;
			}
		}catch(Exception e){
			return false;
		}
		
		return true;
	}
	
	/**
	 * Metodo que comprueba cada fila del arreglo y donde cada fila corresponde a cada uno de los casos de prueba.
	 * @param entrada Recibe un arreglo en donde cada fila tiene dentro el numero de galletas y la cantidad de galltas que se comio al dia.
	 * @return Verdadero si la cadena es valida.
	 */
	private boolean comprobarCantTotal(String[][] entrada)
	{
		int tamano = entrada.length;
		for(int cont = 0; cont<tamano;cont++){
			if(esNumero(entrada[cont][0])!=true){
				return false;
				
			}else if(esNumero(entrada[cont][1])!=true){
				return false;
			}
		}
		return true;
	}
	
	/**
	 * Metodo que comprueba si la cantidad digitada por el usuario es valida y esta en el rango de 1 a 100.
	 * @param entrada recibe la cantidad de casos de prueba dsde un String
	 * @return verdadero si la cantidad es un numero y esta en el rango permitido de lo contrario retornara falso.
	 */
	private boolean esNumero(String entrada)
	{
		try{
			int num = Integer.parseInt(entrada);
			
			if(num<0||num>1000000000){
				return false;
			}
		}catch(Exception e){
			return false;
		}
		
		return true;
	}
	
	
	
	
}
